﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;

namespace Love.Awesome.TMX
{
    public enum RenderOrderEnum
    {
        [XmlEnum("right-down")]
        RightDown,

        [XmlEnum("right-up")]
        RightUp,

        [XmlEnum("left-down")]
        LeftDown,

        [XmlEnum("left-up")]
        LeftUp
    }

    public enum StaggerIndexEnum
    {
        [XmlEnum("odd")]
        Odd,

        [XmlEnum("even")]
        Even
    }

    public enum StaggerAxisEnum
    {
        [XmlEnum("y")]
        AxisY,

        [XmlEnum("x")]
        AxisX
    }

    [XmlType("layer")]
    public enum LayerEnum
    {
        ImageLayer, TileLayer, ObjectGroup
    }

    [XmlType("image")]
    public enum ImageInfoEnum
    {
        Path, Image
    }

    [XmlType("orientation")]
    public enum Orientation
    {
        [XmlEnum("grid")]
        Orthogonal,

        [XmlEnum("hexagonal")]
        Hexagonal,

        [XmlEnum("isometric")]
        Isometric,

        [XmlEnum("staggered")]
        Staggered
    }

    [XmlType("alignment")]
    public enum ObjectAlignmentEnum
    {
        [XmlEnum("unspecified")]
        Unspecified = 0,

        [XmlEnum("topleft")]
        TopLeft = 1,

        [XmlEnum("top")]
        Top = 2,

        [XmlEnum("topright")]
        TopRight = 3,

        [XmlEnum("left")]
        Left = 4,

        [XmlEnum("center")]
        Center = 5,

        [XmlEnum("right")]
        Right = 6,

        [XmlEnum("bottomleft")]
        BottomLeft = 7,

        [XmlEnum("bottom")]
        Bottom = 8,

        [XmlEnum("bottomright")]
        BottomRight = 9,
    }

    [XmlType("tilerendersize")]
    public enum TileRenderSizeEnum
    {
        [XmlEnum("tile")]
        Tile,

        [XmlEnum("grid")]
        Grid,
    }

    [XmlType("fill")]
    public enum FillMode
    {
        [XmlEnum("stretch")]
        Stretch,

        [XmlEnum("preserve-aspect-fit")]
        PreserveAspectFit,
    }


    public enum EncodingEnum
    {
        [XmlEnum("base64")]
        Base64,

        [XmlEnum("csv")]
        CSV
    }

    public enum CompressionEnum
    {
        [XmlEnum("default")]
        Default,

        [XmlEnum("gzip")]
        Gzip,

        [XmlEnum("zlib")]
        Zlib,

        [XmlEnum("zstd")]
        ZSTD,
    }

    public enum DrawOrderEnum
    {
        [XmlEnum("topdown")]
        TopDown,

        [XmlEnum("index")]
        Index,
    }


    public enum HorizontalAlignment
    {
        [XmlEnum("left")]
        Left,

        [XmlEnum("center")]
        Center,

        [XmlEnum("right")]
        Right,

        [XmlEnum("justify")]
        Justify,
    }

    public enum VerticalAlignment
    {
        [XmlEnum("top")]
        Top,

        [XmlEnum("center")]
        Center,

        [XmlEnum("bottom")]
        Bottom,
    }
}
